Golang中的负整数到二进制

时间:2018-11-11 05:41:04

标签: go binary numeric twos-complement

在Go中如何使用二进制补码表示负整数?
例如:

n := int64(-1)
fmt.Printf("%b", n)
fmt.Println(strconv.FormatInt(n, 2))

两行都打印-1。结果应该像ffffffffffffffff

2 个答案:

答案 0 :(得分:3)

对不起,但是您是否想研究内存中如何存储int64值?您将需要使用unsafe包来强制重新解析go中的值。

此代码可以满足您的要求:

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    a := int64(-1)
    fmt.Printf("%x\n", *(*[8]byte)(unsafe.Pointer(&a)))
}

答案 1 :(得分:0)

我还编写了一个func,以编程方式计算 <ubs:unescape>${raw(value)}</ubs:unescape> 的二进制补码,以防您只想计算值:

        function print_row()
    {
//Logic to print the item
    var YourVar= My var value;


    // JSPDF, docs: http://rawgit.com/MrRio/jsPDF/master/docs/global.html

    // Default export is a4 paper, portrait, using milimeters for units
    var doc = new jsPDF({orientation: 'portrait', unit: 'mm', format: [210, 80]});



    doc.setFont("helvetica");
    doc.setFontType("bold");
    doc.setFontSize(16);
    doc.setFontType("italic");
    doc.text("Your text "+ YourVar, 4, 10);

    doc.autoPrint();
    // doc.save("a4.pdf");
    // this opens a new popup, after this the PDF opens the print window view
    // doc.output("bloburi");
    window.open(doc.output('bloburl'), '_blank',"toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no,modal=yes,top=200,left=350,width=600,height=400");
    };