Bitwise Operations

Hi to everyone first post, well letssss goo (no pun !)

I’m trying to make bitwise calculations with binary values, but in the first type (AND) everything goes well but for every other operation the result is not what i want. The value is always 0000.
Even when i println the values they are correct but the expression is not evaluated for some reason.

package main 
import (

“fmt”
“os”
)

func main() {
var val_a string
var val_b string
fmt.Printf("Value A: ")
fmt.Scanln(&val_a)
fmt.Printf("Value B: ")
fmt.Scanln(&val_b)
if len(val_a) != len(val_b) {
	fmt.Println("Values are not the same size.")
	os.Exit(1)
}
fmt.Println("A - AND")
fmt.Println("B - OR")
fmt.Println("C - XOR")
var resp string
fmt.Printf("What Type of operation you want to do: ")
fmt.Scanln(&resp)
var resultado string 
if resp == "A" {
	fmt.Println("calculating AND...")
	if len(val_a) == len(val_b){
		for i := 0; i < len(val_a); i++ {
			if string(val_a[i]) == "0" || string(val_b[i]) == "0" {
				resultado += "0"
			} else if string(val_a[i]) == "0" || string(val_b[i]) == "1" {
				resultado += "0"
			} else if string(val_a[i]) == "1" || string(val_b[i]) == "0"{
				resultado += "0"
			} else if string(val_a[i]) == "1" || string(val_b[i]) == "1" {
				resultado += "1"
			}	
		} 
	}
}
if resp == "B" {
	fmt.Println("calculating OR...")
	if len(val_a) == len(val_b){
		for i := 0; i < len(val_a); i++ {
  			if string(val_a[i]) == "0" || string(val_b[i]) == "0" {
				resultado += "0"
			} else if string(val_a[i]) == "0" || string(val_b[i]) == "1" {
				resultado += "1"
			} else if string(val_a[i]) == "1" || string(val_b[i]) == "0"{
				resultado += "1"
			} else if string(val_a[i]) == "1" || string(val_b[i]) == "1" {
				resultado += "1"
			}
		} 
	} 	
} 
if resp == "C" {
	fmt.Println("calculating XOR...")
	if len(val_a) == len(val_b){
		for i := 0; i < len(val_a); i++ {
			if string(val_a[i]) == "0" || string(val_b[i]) == "0" {
				resultado += "0"
			} else if string(val_a[i]) == "0" || string(val_b[i]) == "1" {
				resultado += "1"
			} else if string(val_a[i]) == "1" || string(val_b[i]) == "0" {
				resultado += "1"
			}else if string(val_a[i]) == "1" || string(val_b[i]) == "1" {
				resultado += "0"
			}	
		} 
	} 	
}
fmt.Println("Result is:", resultado)

}

fmt.Scanln returns an error, but you are ignoring it. Check the error to see why the operation failed.

Returns a error :open_mouth: i have 3 Scanln lets check all then. Tnx

@dfc i get an error yep if i print resp i got a 1 instead of A or B or C if i string(resp) i got a character but yet i do not enter … the loop that i want. Any tip dear Dave…

Solution was change the operator from || to && .

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.