簡體   English   中英

在T-SQL中將負十進制轉換為二進制

[英]Convert negative decimal to binary in T-SQL

我試圖找到信息以及如何。 但是它沒有任何有用的信息。

使用T-SQL,我想將負十進制轉換為二進制並將其轉換回。

樣本值: -9223372036854775543

我嘗試用Calculater將此值轉換為Bin結果是... 1000000000000000000000000000000000000000000000000000000100001001

並轉換回12月。可以。

如何使用T-SQL(SQL2008)腳本/函數進行這樣的轉換? 很長時間才能找到信息。 知道這一點的任何人,請幫助。

沒有內置功能。 對於INT和BIGINT,可以使用CONVERT(VARCHAR(100),CAST(3 AS VARBINARY(100)),2)將十六進制表示形式作為字符串。 那么您可以進行簡單的搜索替換,因為每個十六進制數字正好代表4個二進制數字。 但是,對於超出BIGINT范圍的值,沒有標准的內部表示方式。 您可能會得到正確的結果,並且行為甚至可能在版本之間發生變化。

關於負數的表示方式也沒有標准。 整數的大多數實現使用二進制補碼表示 在該表示中,最高位指示數字的符號。 您擁有多少位是慣例,完全取決於您的環境。

在數學中-3在二進制數中應為-11,而不是11111101。

要解決您的問題,您可以使用CLR函數,也可以通過老式的方式進行操作:

Is it odd? -> output a 1
Is it even? -> output a 0
integer divide by 2
repeat until the value is 0

這將為您提供相反的數字,因此您必須翻轉結果。 要獲得負數n的二進制補碼,請計算1-n,然后使用上述算法將結果轉換為二進制數,但要用相反的數字(0代替1,反之亦然)。 將數字翻轉為正確的順序后,請在前面加上足夠的1,以填充“框”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM